/**
 * 全局错误处理
 */
import log4js from 'log4js';

// 获取专门用于记录异常的日志记录器
const exceptionLogger = log4js.getLogger('exception');

/**
 * 设置全局未捕获异常处理
 */
export const setupErrorHandlers = () => {
  // 捕获未处理的异常
  process.on('uncaughtException', (err) => {
    exceptionLogger.error(`未捕获的异常: ${err.message}`);
    exceptionLogger.error(err.stack);
    console.error('未捕获的异常:', err);
  });

  // 捕获未处理的Promise拒绝
  process.on('unhandledRejection', (reason, promise) => {
    exceptionLogger.error(`未处理的Promise拒绝: ${reason}`);
    if (reason instanceof Error) {
      exceptionLogger.error(reason.stack);
    }
    console.error('未处理的Promise拒绝:', reason);
  });

  // 处理进程退出信号
  process.on('SIGTERM', () => {
    log4js.info('服务正在关闭 (SIGTERM)');
    process.exit(0);
  });

  process.on('SIGINT', () => {
    log4js.info('服务正在关闭 (SIGINT)');
    process.exit(0);
  });
};

// 默认导出，保持兼容性
export default { setupErrorHandlers };